package com.zmn.plat.services.interfaces.brand;

import java.util.List;

import com.zmn.common.dto.VtDTO;
import com.zmn.oms.common.constant.TodmConsts;
import com.zmn.plat.model.entity.brand.BaseBrand;
import com.zmn.plat.model.entity.brand.BaseBrandQuery;
import com.zmn.plat.model.entity.brand.BaseBrandTariffProductQuery;
import com.zmn.plat.model.vo.brand.factor.BrandFactorRatioVo;

/**
 * @author duanzuocai
 * @version v1.0
 * @类说明：品牌
 * @since 2018/11/8 9:35
 */
public interface BaseBrandService {

    /**
     * 查询品牌
     * 
     * @param brandId
     *            品牌ID
     * @return
     */
    BaseBrand findByKey(Integer brandId);

    /**
     * 分页搜索
     * 
     * @param query
     *            条件
     * @return 列表
     */
    List<BaseBrand> listPageByQuery(BaseBrandQuery query);

    /**
     * 根据后台服务分类ID和后台产品一级分类ID查询关联的品牌VTDTO
     * @param servCategId  后台服务分类ID
     * @param categOneId   后台产品一级分类ID
     * @return
     */
    List<VtDTO> listByServCategIdAndCategOneId(Integer servCategId, Integer categOneId);

    /**
     * 功能描述 查询计价器产品的品牌
     * 
     * @author tanbiao
     * @since 2020/3/26
     * @param query
     * @return java.util.List<com.zmn.plat.model.entity.brand.BaseBrand>
     * @modifier
     */
    List<BrandFactorRatioVo> listTariffBrandPageByQuery(BaseBrandTariffProductQuery query);

    /**
     * 功能描述 渠道配置的品牌
     * 
     * @author tanbiao
     * @since 2020/3/26
     * @param query
     * @return java.util.List<com.zmn.plat.model.entity.brand.BaseBrand>
     * @modifier
     */
    List<BrandFactorRatioVo> listTariffChannelBrandPageByQuery(BaseBrandTariffProductQuery query);

    /**
     * 功能描述 未关联指定后台产品二级分类的品牌
     * 
     * @author tanbiao
     * @since 2020/3/26
     * @param query
     * @return java.util.List<com.zmn.plat.model.entity.brand.BaseBrand>
     * @modifier
     */
    List<BaseBrand> listUnlinkedBrandPageByQuery(BaseBrandQuery query);

    /**
     * 搜索
     * 
     * @param query
     *            条件
     * @return
     */
    List<BaseBrand> listByQuery(BaseBrandQuery query);

    /**
     * 所有品牌
     * 
     * @return
     */
    List<BaseBrand> listAll();

    /**
     * 统计
     * 
     * @param query
     *            条件
     * @return
     */
    Integer countByQuery(BaseBrandQuery query);

    /**
     * 更新状态
     *
     * @param brand
     * @return
     */
    Integer updateStatusByKey(BaseBrand brand);

    /**
     * 更新状态
     * 
     * @param ids
     * @param status
     * @param mcStaffName
     * @return
     */
    Integer updateStatusBatchByKey(List<Integer> ids, Integer status, String mcStaffName);

    /**
     * 更新排序
     * 
     * @param brand
     * @return
     */
    Integer updateSortByKey(BaseBrand brand);

    /**
     * 更新排序
     * 
     * @param brandId
     * @param sort
     * @param mcStaffName
     * @return
     */
    Integer updateSortByKey(Integer brandId, Integer sort, String mcStaffName);

    /**
     * 更新
     * 
     * @param brand
     *            品牌
     * @return
     */
    Integer updateByKey(BaseBrand brand);

    /**
     * 插入
     * 
     * @param brand
     *            品牌
     * @return
     */
    Integer insert(BaseBrand brand);

    /**
     * 删除
     * 
     * @param brandId
     *            品牌ID
     * @return
     */
    Integer deleteByKey(Integer brandId);

}
